package javase.ch04;

/**
 * 需求：
 * 线程1要执行打印：A和C，线程2要执行打印：B，
 * 但线程1在打印A后，要线程2打印B之后才能打印C，
 * 所以：线程1在打印A后，必须等待线程2打印完B之后才能继续执行。
 * 多线程的情况下 C -> B -> A
 * sleep()、join()、CountDownLatch类、CyclicBarrier类、阻塞队列LinkedBlockingQueue等等
 */
public class JoinTest {
    public static void main(String[] args) {
        Thread thread2 = new Thread(()->{
            System.out.print(Thread.currentThread().getName()+"正在打印：");
            System.out.println("B");
        },"线程2");
        Thread thread1  =new Thread(()->{
            System.out.print(Thread.currentThread().getName()+"正在打印：");

            System.out.println("C");
            try {
                thread2 .join(); //进入阻塞状态，等待thread2线程执行完毕
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.print(Thread.currentThread().getName()+"正在打印：");

            System.out.println("A");

        },"线程1");
        thread1.start();
        thread2.start();




    }
}


